package code.juc.stopThread;

/**
 * 第二种停止线程的方法： 当线程任务中, 存在sleep这类阻塞方法时
 * <p>
 * 当线程中, 存在sleep这类阻塞线程的方法时; 只要在阻塞期间, 被interrupt()方法触发的时候, 也会停止线程.
 * 但是, 因为sleep不在while中, 可能在while的时候, 就需要停止线程, 那么也需要加上isInterrupted()方法的判断.
 */
public class RightWayStopThreadWithSleep {
    public static void main(String[] args) throws InterruptedException {
        Runnable runnable = () -> {
          int num = 0;
          while (!Thread.currentThread().isInterrupted() && num < 1000) {
              if (num % 100 == 0) {
                  System.out.println(num + "is mod 100!");
              }

              num ++;
          }

            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        };

        Thread thread = new Thread(runnable);
        thread.start();
        Thread.sleep(50);
        thread.interrupt();
    }
}
